The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changes 03
META.yml 23
Makefile.PL 01
inc/Module/Install/Base.pm 11
inc/Module/Install/Can.pm 11
inc/Module/Install/Fetch.pm 11
inc/Module/Install/Makefile.pm 11
inc/Module/Install/Metadata.pm 45
inc/Module/Install/Win32.pm 11
inc/Module/Install/WriteAll.pm 11
inc/Module/Install.pm 22
lib/Log/Contextual.pm 9836
t/dlog.t 16033
t/log.t 7415
t/log4perl.t 915
t/simplelogger.t 48
16 files changed (This is a version diff) 359127
@@ -1,5 +1,8 @@
 ChangeLog for Log-Contextual
 
+0.00305 2011-07-27
+  - Fix regression that caused D* subs to dumper even if the log level was off
+
 0.00304 2010-07-31
   - Add $package_UPTO environment variable for WarnLogger
 
@@ -7,7 +7,7 @@ build_requires:
 configure_requires:
   ExtUtils::MakeMaker: 6.42
 distribution_type: module
-generated_by: 'Module::Install version 1.00'
+generated_by: 'Module::Install version 1.01'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -20,6 +20,7 @@ no_index:
     - t
 requires:
   Data::Dumper::Concise: 0
+  perl: 5.6.0
 resources:
   license: http://dev.perl.org/licenses/
-version: 0.00304
+version: 0.00305
@@ -3,6 +3,7 @@ use inc::Module::Install 0.91;
 use strict;
 use warnings FATAL => 'all';
 
+perl_version '5.006';
 all_from 'lib/Log/Contextual.pm';
 requires 'Data::Dumper::Concise';
 
@@ -4,7 +4,7 @@ package Module::Install::Base;
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 }
 
 # Suspend handler for "redefined" warnings
@@ -9,7 +9,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -515,6 +515,7 @@ sub __extract_license {
 		'GNU Free Documentation license'     => 'unrestricted', 1,
 		'GNU Affero General Public License'  => 'open_source',  1,
 		'(?:Free)?BSD license'               => 'bsd',          1,
+		'Artistic license 2\.0'              => 'artistic_2',   1,
 		'Artistic license'                   => 'artistic',     1,
 		'Apache (?:Software )?license'       => 'apache',       1,
 		'GPL'                                => 'gpl',          1,
@@ -550,9 +551,9 @@ sub license_from {
 
 sub _extract_bugtracker {
 	my @links   = $_[0] =~ m#L<(
-	 \Qhttp://rt.cpan.org/\E[^>]+|
-	 \Qhttp://github.com/\E[\w_]+/[\w_]+/issues|
-	 \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list
+	 https?\Q://rt.cpan.org/\E[^>]+|
+	 https?\Q://github.com/\E[\w_]+/[\w_]+/issues|
+	 https?\Q://code.google.com/p/\E[\w_\-]+/issues/list
 	 )>#gx;
 	my %links;
 	@links{@links}=();
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }
@@ -31,7 +31,7 @@ BEGIN {
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.00';
+	$VERSION = '1.01';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -467,4 +467,4 @@ sub _CLASS ($) {
 
 1;
 
-# Copyright 2008 - 2010 Adam Kennedy.
+# Copyright 2008 - 2011 Adam Kennedy.
@@ -3,7 +3,9 @@ package Log::Contextual;
 use strict;
 use warnings;
 
-our $VERSION = '0.00304';
+our $VERSION = '0.00305';
+
+my @levels = qw(debug trace warn info error fatal);
 
 require Exporter;
 use Data::Dumper::Concise;
@@ -11,23 +13,9 @@ use Scalar::Util 'blessed';
 
 BEGIN { our @ISA = qw(Exporter) }
 
-my @dlog = (qw(
-   Dlog_debug DlogS_debug
-   Dlog_trace DlogS_trace
-   Dlog_warn DlogS_warn
-   Dlog_info DlogS_info
-   Dlog_error DlogS_error
-   Dlog_fatal DlogS_fatal
- ));
-
-my @log = (qw(
-   log_debug logS_debug
-   log_trace logS_trace
-   log_warn logS_warn
-   log_info logS_info
-   log_error logS_error
-   log_fatal logS_fatal
- ));
+my @dlog = ((map "Dlog_$_", @levels), (map "DlogS_$_", @levels));
+
+my @log = ((map "log_$_", @levels), (map "logS_$_", @levels));
 
 eval {
    require Log::Log4perl;
@@ -147,86 +135,32 @@ sub _do_logS {
    $value
 }
 
-sub log_trace (&@) { _do_log( trace => _get_logger( caller ), shift @_, @_) }
-sub log_debug (&@) { _do_log( debug => _get_logger( caller ), shift @_, @_) }
-sub log_info  (&@) { _do_log( info  => _get_logger( caller ), shift @_, @_) }
-sub log_warn  (&@) { _do_log( warn  => _get_logger( caller ), shift @_, @_) }
-sub log_error (&@) { _do_log( error => _get_logger( caller ), shift @_, @_) }
-sub log_fatal (&@) { _do_log( fatal => _get_logger( caller ), shift @_, @_) }
-
-sub logS_trace (&$) { _do_logS( trace => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_debug (&$) { _do_logS( debug => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_info  (&$) { _do_logS( info  => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_warn  (&$) { _do_logS( warn  => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_error (&$) { _do_logS( error => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_fatal (&$) { _do_logS( fatal => _get_logger( caller ), $_[0], $_[1]) }
-
-
-sub Dlog_trace (&@) {
-  my $code = shift;
-  local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
-  return _do_log( trace => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_debug (&@) {
-  my $code = shift;
-  local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
-  return _do_log( debug => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_info (&@) {
-  my $code = shift;
-  local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
-  return _do_log( info => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_warn (&@) {
-  my $code = shift;
-  local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
-  return _do_log( warn => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_error (&@) {
-  my $code = shift;
-  local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
-  return _do_log( error => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_fatal (&@) {
-  my $code = shift;
-  local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
-  return _do_log( fatal => _get_logger( caller ), $code, @_ );
-}
-
-
-sub DlogS_trace (&$) {
-  local $_ = Data::Dumper::Concise::Dumper $_[1];
-  _do_logS( trace => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_debug (&$) {
-  local $_ = Data::Dumper::Concise::Dumper $_[1];
-  _do_logS( debug => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_info (&$) {
-  local $_ = Data::Dumper::Concise::Dumper $_[1];
-  _do_logS( info => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_warn (&$) {
-  local $_ = Data::Dumper::Concise::Dumper $_[1];
-  _do_logS( warn => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_error (&$) {
-  local $_ = Data::Dumper::Concise::Dumper $_[1];
-  _do_logS( error => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_fatal (&$) {
-  local $_ = Data::Dumper::Concise::Dumper $_[1];
-  _do_logS( fatal => _get_logger( caller ), $_[0], $_[1] )
+for my $level (@levels) {
+   no strict 'refs';
+
+   *{"log_$level"} = sub (&@) {
+      _do_log( $level => _get_logger( caller ), shift @_, @_)
+   };
+
+   *{"logS_$level"} = sub (&$) {
+      _do_logS( $level => _get_logger( caller ), $_[0], $_[1])
+   };
+
+   *{"Dlog_$level"} = sub (&@) {
+     my ($code, @args) = @_;
+     return _do_log( $level => _get_logger( caller ), sub {
+        local $_ = (@args?Data::Dumper::Concise::Dumper @args:'()');
+        $code->(@_)
+     }, @args );
+   };
+
+   *{"DlogS_$level"} = sub (&$) {
+     my ($code, $ref) = @_;
+     _do_logS( $level => _get_logger( caller ), sub {
+        local $_ = Data::Dumper::Concise::Dumper $ref;
+        $code->($ref)
+     }, $ref )
+   };
 }
 
 1;
@@ -286,6 +220,10 @@ really basic logger, L<Log::Contextual::SimpleLogger>, but in general you
 should use a real logger instead of that.  For something more serious but not
 overly complicated, try L<Log::Dispatchouli> (see L</SYNOPSIS> for example.)
 
+The reason for this module is to abstract your logging interface so that
+logging is as painless as possible, while still allowing you to switch from one
+logger to another.
+
 =head1 OPTIONS
 
 =head2 -logger
@@ -6,6 +6,8 @@ use Test::More 'no_plan';
 my $var_log;
 my $var;
 
+my @levels = qw(debug trace warn info error fatal);
+
 BEGIN {
    $var_log = Log::Contextual::SimpleLogger->new({
       levels  => [qw(trace debug info warn error fatal)],
@@ -14,166 +16,37 @@ BEGIN {
 }
 
 use Log::Contextual qw{:dlog}, -logger => $var_log;
-{
-my @foo = Dlog_trace { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_trace passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_trace is correct');
-[trace] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_trace { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_trace passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_trace is correct');
-[trace] Look ma, data: [
-  "frew",
-  "bar",
-  "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_debug { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_debug passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_debug is correct');
-[debug] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_debug { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_debug passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_debug is correct');
-[debug] Look ma, data: [
-  "frew",
-  "bar",
-  "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_info { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_info passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_info is correct');
-[info] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_info { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_info passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_info is correct');
-[info] Look ma, data: [
-  "frew",
-  "bar",
-  "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_warn { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_warn passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_warn is correct');
-[warn] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_warn { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_warn passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_warn is correct');
-[warn] Look ma, data: [
-  "frew",
-  "bar",
-  "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_error { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_error passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_error is correct');
-[error] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_error { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_error passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_error is correct');
-[error] Look ma, data: [
-  "frew",
-  "bar",
-  "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_fatal { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_fatal passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_fatal is correct');
-[fatal] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_fatal { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_fatal passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_fatal is correct');
-[fatal] Look ma, data: [
-  "frew",
-  "bar",
-  "baz"
-]
-OUT
-}
-
-
-
-{
-   my @foo = Dlog_trace { "nothing: $_" } ();
-   ok( eq_array(\@foo, []), 'Dlog_trace passes nothing through correctly');
-   is( $var, "[trace] nothing: ()\n", 'Output for Dlog_trace is correct');
-}
-
-{
-   my @foo = Dlog_debug { "nothing: $_" } ();
-   ok( eq_array(\@foo, []), 'Dlog_debug passes nothing through correctly');
-   is( $var, "[debug] nothing: ()\n", 'Output for Dlog_debug is correct');
-}
-
-{
-   my @foo = Dlog_info { "nothing: $_" } ();
-   ok( eq_array(\@foo, []), 'Dlog_info passes nothing through correctly');
-   is( $var, "[info] nothing: ()\n", 'Output for Dlog_info is correct');
-}
-
-{
-   my @foo = Dlog_warn { "nothing: $_" } ();
-   ok( eq_array(\@foo, []), 'Dlog_warn passes nothing through correctly');
-   is( $var, "[warn] nothing: ()\n", 'Output for Dlog_warn is correct');
-}
-
-{
-   my @foo = Dlog_error { "nothing: $_" } ();
-   ok( eq_array(\@foo, []), 'Dlog_error passes nothing through correctly');
-   is( $var, "[error] nothing: ()\n", 'Output for Dlog_error is correct');
-}
 
-{
-   my @foo = Dlog_fatal { "nothing: $_" } ();
-   ok( eq_array(\@foo, []), 'Dlog_fatal passes nothing through correctly');
-   is( $var, "[fatal] nothing: ()\n", 'Output for Dlog_fatal is correct');
+for my $level (@levels) {
+
+   my @foo = main->can("Dlog_$level")->(
+      sub { "Look ma, data: $_" },
+      qw{frew bar baz}
+   );
+   ok(
+      eq_array(\@foo, [qw{frew bar baz}]),
+      "Dlog_$level passes data through correctly"
+   );
+   is(
+      $var, qq([$level] Look ma, data: "frew"\n"bar"\n"baz"\n),
+      "Output for Dlog_$level is correct"
+   );
+
+   my $bar = main->can("DlogS_$level")->(
+      sub { "Look ma, data: $_" },
+      [qw{frew bar baz}]
+   );
+   ok(
+      eq_array($bar, [qw{frew bar baz}]),
+      'DlogS_trace passes data through correctly'
+   );
+   is(
+      $var, qq([$level] Look ma, data: [\n  "frew",\n  "bar",\n  "baz"\n]\n),
+      "Output for DlogS_$level is correct"
+   );
+
+   @foo = main->can("Dlog_$level")->(sub { "nothing: $_" }, ());
+   ok( eq_array(\@foo, []), "Dlog_$level passes nothing through correctly");
+   is( $var, "[$level] nothing: ()\n", "Output for Dlog_$level is correct");
 }
 
@@ -4,6 +4,9 @@ use warnings;
 use Log::Contextual qw{:log with_logger set_logger};
 use Log::Contextual::SimpleLogger;
 use Test::More qw(no_plan);
+
+my @levels = qw(debug trace warn info error fatal);
+
 my $var1;
 my $var2;
 my $var3;
@@ -76,81 +79,19 @@ SETWITHLOGGER: {
 }
 
 VANILLA: {
-   log_trace { 'fiSMBoC' };
-   is( $var3, "[trace] fiSMBoC\n", 'trace works');
-
-   log_debug { 'fiSMBoC' };
-   is( $var3, "[debug] fiSMBoC\n", 'debug works');
-
-   log_info { 'fiSMBoC' };
-   is( $var3, "[info] fiSMBoC\n", 'info works');
-
-   log_warn { 'fiSMBoC' };
-   is( $var3, "[warn] fiSMBoC\n", 'warn works');
-
-   log_error { 'fiSMBoC' };
-   is( $var3, "[error] fiSMBoC\n", 'error works');
-
-   log_fatal { 'fiSMBoC' };
-   is( $var3, "[fatal] fiSMBoC\n", 'fatal works');
-
+   for (@levels) {
+      main->can("log_$_")->(sub { 'fiSMBoC' });
+      is( $var3, "[$_] fiSMBoC\n", "$_ works");
+
+      my @vars = main->can("log_$_")->(sub { 'fiSMBoC: ' . $_[1] }, qw{foo bar baz});
+      is( $var3, "[$_] fiSMBoC: bar\n", "log_$_ works with input");
+      ok( eq_array(\@vars, [qw{foo bar baz}]), "log_$_ passes data through correctly");
+
+      my $val = main->can("logS_$_")->(sub { 'fiSMBoC: ' . $_[0] }, 'foo');
+      is( $var3, "[$_] fiSMBoC: foo\n", "logS_$_ works with input");
+      is( $val, 'foo', "logS_$_ passes data through correctly");
+   }
 }
 
 ok(!eval { Log::Contextual->import; 1 }, 'Blank Log::Contextual import dies');
 
-PASSTHROUGH: {
-   my @vars;
-
-   @vars = log_trace { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
-   is( $var3, "[trace] fiSMBoC: bar\n", 'log_trace works with input');
-   ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_trace passes data through correctly');
-
-   @vars = log_debug { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
-   is( $var3, "[debug] fiSMBoC: bar\n", 'log_debug works with input');
-   ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_debug passes data through correctly');
-
-   @vars = log_info { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
-   is( $var3, "[info] fiSMBoC: bar\n", 'log_info works with input');
-   ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_info passes data through correctly');
-
-   @vars = log_warn { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
-   is( $var3, "[warn] fiSMBoC: bar\n", 'log_warn works with input');
-   ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_warn passes data through correctly');
-
-   @vars = log_error { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
-   is( $var3, "[error] fiSMBoC: bar\n", 'log_error works with input');
-   ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_error passes data through correctly');
-
-   @vars = log_fatal { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
-   is( $var3, "[fatal] fiSMBoC: bar\n", 'log_fatal works with input');
-   ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_fatal passes data through correctly');
-
-
-
-   my $val;
-   $val = logS_trace { 'fiSMBoC: ' . $_[0] } 'foo';
-   is( $var3, "[trace] fiSMBoC: foo\n", 'logS_trace works with input');
-   is( $val, 'foo', 'logS_trace passes data through correctly');
-
-   $val = logS_debug { 'fiSMBoC: ' . $_[0] } 'foo';
-   is( $var3, "[debug] fiSMBoC: foo\n", 'logS_debug works with input');
-   is( $val, 'foo', 'logS_debug passes data through correctly');
-
-   $val = logS_info { 'fiSMBoC: ' . $_[0] } 'foo';
-   is( $var3, "[info] fiSMBoC: foo\n", 'logS_info works with input');
-   is( $val, 'foo', 'logS_info passes data through correctly');
-
-   $val = logS_warn { 'fiSMBoC: ' . $_[0] } 'foo';
-   is( $var3, "[warn] fiSMBoC: foo\n", 'logS_warn works with input');
-   is( $val, 'foo', 'logS_warn passes data through correctly');
-
-   $val = logS_error { 'fiSMBoC: ' . $_[0] } 'foo';
-   is( $var3, "[error] fiSMBoC: foo\n", 'logS_error works with input');
-   is( $val, 'foo', 'logS_error passes data through correctly');
-
-   $val = logS_fatal { 'fiSMBoC: ' . $_[0] } 'foo';
-   is( $var3, "[fatal] fiSMBoC: foo\n", 'logS_fatal works with input');
-   is( $val, 'foo', 'logS_fatal passes data through correctly');
-
-   ok(!eval "logS_error { 'frew' } 'bar', 'baz'; 1", 'logS_$level dies from too many args');
-}
@@ -3,12 +3,15 @@ use warnings;
 
 use Test::More;
 
-if (!eval "use Log::Log4perl;
-   die if $Log::Log4perl::VERSION < 1.29;
-    1") {
-   plan skip_all => 'Log::Log4perl 1.29 not installed'
-} else {
+if (eval <<'EOE'
+require Log::Log4perl;
+die if $Log::Log4perl::VERSION < 1.29;
+1
+EOE
+) {
    plan tests => 2;
+} else {
+   plan skip_all => 'Log::Log4perl 1.29 not installed'
 }
 
 use FindBin;
@@ -17,16 +20,19 @@ Log::Log4perl->init("$FindBin::Bin/log4perl.conf");
 use Log::Contextual qw( :log set_logger );
 set_logger(Log::Log4perl->get_logger);
 
-log_error { 'err 14' };
+my @elines;
+
+push @elines, __LINE__ and log_error { 'err FIRST' };
 
 sub foo {
-   log_error { 'err 17' };
+   push @elines, __LINE__ and log_error { 'err SECOND' };
 }
 foo();
 open my $log, '<', 'myerrs.log';
 my @datas = <$log>;
 close $log;
 
-is $datas[0], "file:t/log4perl.t line:20 method:main:: - err 14\n", 'file and line work with Log4perl';
-is $datas[1], "file:t/log4perl.t line:23 method:main::foo - err 17\n", 'file and line work with Log4perl in a sub';
+is $datas[0], "file:t/log4perl.t line:$elines[0] method:main:: - err FIRST\n", 'file and line work with Log4perl';
+is $datas[1], "file:t/log4perl.t line:$elines[1] method:main::foo - err SECOND\n", 'file and line work with Log4perl in a sub';
 
+unlink 'myerrs.log';
@@ -1,6 +1,7 @@
 use strict;
 use warnings;
 
+use File::Temp;
 use Log::Contextual::SimpleLogger;
 use Log::Contextual qw{:log set_logger} => -logger =>
    Log::Contextual::SimpleLogger->new({levels => [qw{debug}]});
@@ -22,13 +23,16 @@ ok(eval { log_error { die 'this should live' }; 1}, 'error does not get called')
 ok(eval { log_fatal { die 'this should live' }; 1}, 'fatal does not get called');
 
 {
-   my $cap;
-   local *STDERR = do { open my $fh, '>', \$cap; $fh };
+  my $tempfile = File::Temp->new (UNLINK => 1, TEMPLATE => 'stderrXXXXXX');
+  my $fn = fileno ($tempfile);
+  open (STDERR, ">&$fn") or die $!;
+  log_debug { 'frew' };
 
-   log_debug { 'frew' };
-   is($cap, "[debug] frew\n", 'SimpleLogger outputs to STDERR correctly');
+  my $out = do { local @ARGV = $tempfile; <> };
+  is($out, "[debug] frew\n", 'SimpleLogger outputs to STDERR correctly');
 }
 
+
 my $response;
 my $l2 = Log::Contextual::SimpleLogger->new({
    levels => [qw{trace debug info warn error fatal}],